package LetCode;

import java.util.ArrayList;
import java.util.List;

/**
 * @author: lwt
 * @date: 2025/7/29 19:32
 * @description:
 * 给定一个数组 prices，它的第 i 个元素 prices [i］ 表示一支给定股票第 i 天的
 * 价格。
 * 你只能选择某一天买入这只股票，并选择在未来的某一个不同的日子卖出该股
 * 票。设计一个算法来计算你所能获取的最大利润。
 * 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润，返回。
 */
public class day6 {
    public static void main(String[] args) {
//        int[] prices = {7,1,5,3,6,4};
//        int[] prices = {7,6,4,3,1};
        int[] prices = {4,2,1,7};
        int profit = maxProfit(prices);
        System.out.println(profit);

    }
    public static int maxProfit(int[] prices) {
       // int min = prices[0];  //买入股票的时机
        //int index = 0;  //最小下标
        //int result = 0; //最大小标
//        for (int i = 1; i < prices.length; i++) {
//            if(prices[i]<min){
//                min = prices[i];
//                index = i;
//            }
//        }
//        int max = prices[index];
//        for (int j = index; j < prices.length; j++) {
//            if (prices[j] >max) {
//                max = prices[j];
//                result = j;
//            }
//        }
//       if (index >result){
//           return 0;
//       }
//        return prices[result] -  prices[index];



//        int i = 0;
//        int n = prices.length-1;
//        List<Integer> list = new ArrayList<>();
//        while (i < n) {
//            int max =  prices[i];
//            int profit = 0;
//            int index = 0;
//            for (int j = i+1;j< prices.length;j++){
//                if (prices[j] > max && prices[j] > prices[i]) {
//                    max = prices[j];
//                    index = j;
//                    profit = prices[j]-prices[i];
//                }
//            }
//            list.add(profit);
//            i++;
//        }
//        int maxProfit = 0;
//        for (int t = 0;t<list.size();t++){
//            if (list.get(t)>maxProfit){
//                maxProfit = list.get(t);
//            }
//        }
//        if (maxProfit == 0){
//            return 0;
//        }
//        return maxProfit;


        int i = 0;
        int j = i+1;
        int max = prices[1] - prices[0];
        while (j<prices.length) {
            if (prices[j] - prices[i] > max && prices[j] - prices[i] > 0) {
                max = prices[j] - prices[i];
                j++;
            }else if(prices[j] - prices[i] > 0 ){
                j++;
            } else {
                i++;
                j=i+1;
            }
        }
        if (max <=0){
            max = 0;
        }
        return max;
    }
}
